package test;

import java.util.Arrays;

public class 单色德州扑克 {
    public static void main(String[] args) {
        int[] cards = new int[7];
        for (int i = 0; i < 7; i++) {
            cards[i] = (int) (Math.random() * 13) + 2;
        }
        Arrays.sort(cards);
        System.out.println("发牌结果：" + Arrays.toString(cards));
        int rank = getRank(cards);
        System.out.println("牌面大小：" + rank);
    }

    // 获取牌面大小
    public static int getRank(int[] cards) {
        boolean flush = true; // 是否为同花
        boolean straight = true; // 是否为顺子
        boolean four = false; // 是否为四条
        boolean three = false; // 是否为三条
        boolean fullHouse = false; // 是否为满堂红
        int sameCards = 1; // 相同数字的牌的数量
        int sameCards2 = 1; // 相同数字的牌的数量（用于判断满堂红）

        for (int i = 0; i < cards.length - 1; i++) {
            if (cards[i] != cards[i + 1] - 1) {
                straight = false;
            }
            if (cards[i] != cards[i + 1]) {
                sameCards2 = sameCards;
                sameCards = 1;
            } else {
                sameCards++;
                if (sameCards == 4) {
                    four = true;
                } else if (sameCards == 3) {
                    three = true;
                }
            }
            if (cards[i] / 4 != cards[i + 1] / 4) {
                flush = false;
            }
        }
        if (sameCards == 4) {
            four = true;
        } else if (sameCards == 3) {
            three = true;
        }

        if (straight && flush) {
            return 9; // 同花顺
        }
        if (four) {
            return 8; // 四条
        }
        if (three && sameCards2 == 2) {
            return 7; // 满堂红
        }
        if (flush) {
            return 6; // 同花
        }
        if (straight) {
            return 5; // 顺子
        }
        if (three) {
            return 4; // 三条
        }

        int pairs = 0; // 对子的数量
        for (int i = 0; i < cards.length - 1; i++) {
            if (cards[i] == cards[i + 1]) {
                pairs++;
                i++;
            }
        }
        if (pairs == 2) {
            return 3; // 两对
        }
        if (pairs == 1) {
            return 2; // 一对
        }
        return 1; // 散牌
    }
}
